Previous Book Contents Book Index Next

Inside Macintosh: 3D Graphics Programming With QuickDraw 3D /
Chapter 17 - File Objects


Summary of File Objects

C Summary

Constants

typedef enum TQ3FileModeMasks {
   kQ3FileModeNormal             = 0,
   kQ3FileModeStream             = 1 << 0,
   kQ3FileModeDatabase           = 1 << 1,
   kQ3FileModeText               = 1 << 2
} TQ3FileModeMasks;
#define kQ3OldVersion                        Q3FileVersion(0,2)
#define kQ3CurrentVersion                    Q3FileVersion(0,5)
#define kQ3StringMaximumLength               1024

Unknown Object Types

#define kQ3UnknownTypeBinary           Q3_OBJECT_TYPE('u','k','b','n')
#define kQ3UnknownTypeText             Q3_OBJECT_TYPE('u','k','t','x')

Data Types

Basic Types

typedef unsigned long         TQ3FileVersion;
typedef unsigned long         TQ3FileMode;
typedef unsigned char         TQ3Uns8;    /*1-byte unsigned integer*/
typedef signed char           TQ3Int8;    /*1-byte signed integer*/
typedef unsigned short        TQ3Uns16;   /*2-byte unsigned integer*/
typedef signed short          TQ3Int16;   /*2-byte signed integer*/
typedef unsigned long         TQ3Uns32;   /*4-byte unsigned integer*/
typedef signed long           TQ3Int32;   /*4-byte signed integer*/
typedef struct TQ3Uns64 {
   unsigned long           hi;
   unsigned long           lo;
} TQ3Uns64;                               /*8-byte unsigned integer*/
typedef struct TQ3Int64 {
   signed long             hi;
   unsigned long           lo;
} TQ3Uns64;                               /*8-byte signed integer*/
typedef float              TQ3Float32; /*4-byte floating-pt number*/
typedef double             TQ3Float64; /*8-byte floating-pt number*/
typedef TQ3Uns32           TQ3Size;

Unknown Object Data Types

typedef struct TQ3UnknownTextData {
   char                       *objectName;      /*'\0' terminated*/
   char                       *contents;        /*'\0' terminated*/
} TQ3UnknownTextData;
typedef struct TQ3UnknownBinaryData {
   TQ3ObjectType              objectType;
   unsigned long              size;
   TQ3Endian                  byteOrder;
   char                       *contents;
} TQ3UnknownBinaryData;

File Objects Routines

Creating File Objects

TQ3FileObject Q3File_New(void);

Attaching File Objects to Storage Objects

TQ3Status Q3File_GetStorage(TQ3FileObject file, 
TQ3StorageObject *storage);
TQ3Status Q3File_SetStorage(TQ3FileObject file, TQ3StorageObject storage);

Accessing File Objects

TQ3Status Q3File_OpenRead(TQ3FileObject file, TQ3FileMode *mode);
TQ3Status Q3File_OpenWrite(TQ3FileObject file, TQ3FileMode mode);
TQ3Status Q3File_IsOpen(TQ3FileObject file, TQ3Boolean *isOpen);
TQ3Status Q3File_Close(TQ3FileObject file);
TQ3Status Q3File_Cancel(TQ3FileObject file);
TQ3Status Q3File_GetMode(TQ3FileObject file, TQ3FileMode *fileMode);
TQ3Status Q3File_GetVersion(TQ3FileObject file, TQ3FileVersion *version);

Accessing Objects Directly

TQ3ObjectType Q3File_GetNextObjectType (
TQ3FileObject file);
TQ3Boolean Q3File_IsNextObjectOfType (
TQ3FileObject file, 
TQ3ObjectType ofType);
TQ3Object Q3File_ReadObject(TQ3FileObject file);
TQ3Status Q3File_SkipObject(TQ3FileObject file);
TQ3Boolean Q3File_IsEndOfFile(TQ3FileObject file);

Setting Idle Methods

TQ3Status Q3File_SetIdleMethod(TQ3FileObject file, 
TQ3FileIdleMethod idle, 
const void *idleData);

Reading and Writing File Subobjects

TQ3Boolean Q3File_IsEndOfData(TQ3FileObject file);
TQ3Boolean Q3File_IsEndOfContainer (
TQ3FileObject file, 
TQ3Object rootObject);

Reading and Writing File Data

TQ3Status Q3Uns8_Read(TQ3Uns8 *data, TQ3FileObject file);
TQ3Status Q3Uns8_Write(const TQ3Uns8 data, TQ3FileObject file);
TQ3Status Q3Uns16_Read(TQ3Uns16 *data, TQ3FileObject file);
TQ3Status Q3Uns16_Write(const TQ3Uns16 data, TQ3FileObject file);
TQ3Status Q3Uns32_Read(TQ3Uns32 *data, TQ3FileObject file);
TQ3Status Q3Uns32_Write(const TQ3Uns32 data, TQ3FileObject file);
TQ3Status Q3Int32_Read(TQ3Int32 *data, TQ3FileObject file);
TQ3Status Q3Int32_Write(const TQ3Int32 data, TQ3FileObject file);
TQ3Status Q3Uns64_Read(TQ3Uns64 *data, TQ3FileObject file);
TQ3Status Q3Uns64_Write(const TQ3Uns64 data, TQ3FileObject file);
TQ3Status Q3Float32_Read(TQ3Float32 *data, TQ3FileObject file);
TQ3Status Q3Float32_Write(const TQ3Float32 data, TQ3FileObject file);
TQ3Status Q3Float64_Read(TQ3Float64 *data, TQ3FileObject file);
TQ3Status Q3Float64_Write(const TQ3Float64 data, TQ3FileObject file);
TQ3Size Q3Size_Pad(TQ3Size size);
TQ3Status Q3String_Read(char *data, 
unsigned long *length, 
TQ3FileObject file);
TQ3Status Q3String_Write(const char *data, TQ3FileObject file);
TQ3Status Q3RawData_Read(unsigned char *data, 
unsigned long size, 
TQ3FileObject file);
TQ3Status Q3RawData_Write(const unsigned char *data, 
unsigned long size, 
TQ3FileObject file);
TQ3Status Q3Point2D_Read(TQ3Point2D *point2D, TQ3FileObject file);
TQ3Status Q3Point2D_Write(const TQ3Point2D *point2D, 
TQ3FileObject file);
TQ3Status Q3Point3D_Read(TQ3Point3D *point3D, TQ3FileObject file);
TQ3Status Q3Point3D_Write(const TQ3Point3D *point3D, 
TQ3FileObject file);
TQ3Status Q3RationalPoint3D_Read (
TQ3RationalPoint3D *point3D, 
TQ3FileObject file);
TQ3Status Q3RationalPoint3D_Write (
const TQ3RationalPoint3D *point3D, 
TQ3FileObject file);
TQ3Status Q3RationalPoint4D_Read (
TQ3RationalPoint4D *point4D, 
TQ3FileObject file);
TQ3Status Q3RationalPoint4D_Write (
const TQ3RationalPoint4D *point4D, 
TQ3FileObject file);
TQ3Status Q3Vector2D_Read(TQ3Vector2D *vector2D, TQ3FileObject file);
TQ3Status Q3Vector2D_Write(const TQ3Vector2D *vector2D, 
TQ3FileObject file);
TQ3Status Q3Vector3D_Read(TQ3Vector3D *vector3D, TQ3FileObject file);
TQ3Status Q3Vector3D_Write(const TQ3Vector3D *vector3D, 
TQ3FileObject file);
TQ3Status Q3Matrix4x4_Read(TQ3Matrix4x4 *matrix4x4, 
TQ3FileObject file);
TQ3Status Q3Matrix4x4_Write(const TQ3Matrix4x4 *matrix4x4, 
TQ3FileObject file);
TQ3Status Q3Tangent2D_Read(TQ3Tangent2D *tangent2D, 
TQ3FileObject file);
TQ3Status Q3Tangent2D_Write(const TQ3Tangent2D *tangent2D, 
TQ3FileObject file);
TQ3Status Q3Tangent3D_Read(TQ3Tangent3D *tangent3D, 
TQ3FileObject file);
TQ3Status Q3Tangent3D_Write(const TQ3Tangent3D *tangent3D, 
TQ3FileObject file);
TQ3Status Q3Comment_Write(char *comment, TQ3FileObject file);

Managing Unknown Objects

TQ3ObjectType Q3Unknown_GetType (
TQ3UnknownObject unknownObject);
TQ3Status Q3Unknown_GetDirtyState (
TQ3UnknownObject unknownObject, 
TQ3Boolean *isDirty);
TQ3Status Q3Unknown_SetDirtyState (
TQ3UnknownObject unknownObject, 
TQ3Boolean isDirty);
TQ3Status Q3UnknownText_GetData (
TQ3UnknownObject unknownObject, 
TQ3UnknownTextData *unknownTextData);
TQ3Status Q3UnknownText_EmptyData (
TQ3UnknownTextData *unknownTextData);
TQ3Status Q3UnknownBinary_GetData (
TQ3UnknownObject unknownObject, 
TQ3UnknownBinaryData *unknownBinaryData);
TQ3Status Q3UnknownBinary_EmptyData (
TQ3UnknownBinaryData *unknownBinaryData);

Managing View Hints Objects

TQ3ViewHintsObject Q3ViewHints_New (
TQ3ViewObject view);
TQ3Status Q3ViewHints_GetRenderer (
TQ3ViewHintsObject viewHints, 
TQ3RendererObject *renderer);
TQ3Status Q3ViewHints_SetRenderer (
TQ3ViewHintsObject viewHints, 
TQ3RendererObject renderer);
TQ3Status Q3ViewHints_GetCamera (
TQ3ViewHintsObject viewHints, 
TQ3CameraObject *camera);
TQ3Status Q3ViewHints_SetCamera (
TQ3ViewHintsObject viewHints, 
TQ3CameraObject camera);
TQ3Status Q3ViewHints_GetLightGroup (
TQ3ViewHintsObject viewHints, 
TQ3GroupObject *lightGroup);
TQ3Status Q3ViewHints_SetLightGroup (
TQ3ViewHintsObject viewHints, 
TQ3GroupObject lightGroup);
TQ3Status Q3ViewHints_GetAttributeSet (
TQ3ViewHintsObject viewHints, 
TQ3AttributeSet *attributeSet);
TQ3Status Q3ViewHints_SetAttributeSet (
TQ3ViewHintsObject viewHints, 
TQ3AttributeSet attributeSet);
TQ3Status Q3ViewHints_GetDimensionsState (
TQ3ViewHintsObject viewHints, 
TQ3Boolean *isValid);
TQ3Status Q3ViewHints_SetDimensionsState (
TQ3ViewHintsObject viewHints, 
TQ3Boolean isValid);
TQ3Status Q3ViewHints_GetDimensions (
TQ3ViewHintsObject viewHints, 
unsigned long *width, 
unsigned long *height);
TQ3Status Q3ViewHints_SetDimensions (
TQ3ViewHintsObject viewHints, 
unsigned long width, 
unsigned long height);
TQ3Status Q3ViewHints_GetMaskState (
TQ3ViewHintsObject viewHints, 
TQ3Boolean *isValid);
TQ3Status Q3ViewHints_SetMaskState (
TQ3ViewHintsObject viewHints, 
TQ3Boolean isValid);
TQ3Status Q3ViewHints_GetMask(TQ3ViewHintsObject viewHints, 
TQ3Bitmap *mask);
TQ3Status Q3ViewHints_SetMask(TQ3ViewHintsObject viewHints, 
const TQ3Bitmap *mask);
TQ3Status Q3ViewHints_GetClearImageMethod (
TQ3ViewHintsObject viewHints, 
TQ3DrawContextClearImageMethod *clearMethod);
TQ3Status Q3ViewHints_SetClearImageMethod (
TQ3ViewHintsObject viewHints, 
TQ3DrawContextClearImageMethod clearMethod);
TQ3Status Q3ViewHints_GetClearImageColor (
TQ3ViewHintsObject viewHints, 
TQ3ColorARGB *color);
TQ3Status Q3ViewHints_SetClearImageColor (
TQ3ViewHintsObject viewHints, 
const TQ3ColorARGB *color);

Version Macros

#define Q3FileVersion(majorVersion, minorVersion)        \
         (TQ3FileVersion) ((((TQ3Uns32) majorVersion & 0xFFFF) << 16) | \
                        ((TQ3Uns32) minorVersion & 0xFFFF))

Application-Defined Routines

typedef TQ3Status (*TQ3ObjectReadDataMethod) (
TQ3Object parentObject, 
TQ3FileObject file);
typedef TQ3Status (*TQ3ObjectTraverseMethod) (
TQ3Object object, 
TQ3FileObject file);
typedef TQ3Status (*TQ3ObjectWriteMethod) (
const void *object, 
TQ3FileObject file);
typedef TQ3Status (*TQ3FileIdleMethod) (
TQ3FileObject file, 
const void *idlerData);

Errors, Warnings, and Notices
kQ3ErrorNoStorageSetForFile 
kQ3ErrorEndOfFile 
kQ3ErrorFileCancelled 
kQ3ErrorInvalidMetafile 
kQ3ErrorInvalidMetafilePrimitive 
kQ3ErrorInvalidMetafileLabel 
kQ3ErrorInvalidMetafileObject 
kQ3ErrorInvalidMetafileSubObject 
kQ3ErrorInvalidSubObjectForObject 
kQ3ErrorUnresolvableReference 
kQ3ErrorUnknownObject 
kQ3ErrorFileAlreadyOpen 
kQ3ErrorFileNotOpen 
kQ3ErrorFileIsOpen 
kQ3ErrorBeginWriteAlreadyCalled 
kQ3ErrorBeginWriteNotCalled 
kQ3ErrorEndWriteNotCalled 
kQ3ErrorReadStateInactive 
kQ3ErrorStateUnavailable 
kQ3ErrorWriteStateInactive 
kQ3ErrorSizeNotLongAligned 
kQ3ErrorFileModeRestriction 
kQ3ErrorInvalidHexString 
kQ3ErrorWroteMoreThanSize 
kQ3ErrorWroteLessThanSize 
kQ3ErrorReadLessThanSize 
kQ3ErrorReadMoreThanSize 
kQ3ErrorSizeMismatch 
kQ3ErrorStringExceedsMaximumLength 
kQ3ErrorNonUniqueLabel 
kQ3ErrorUnmatchedEndGroup 
kQ3WarningFilePointerResolutionFailed 
kQ3WarningStringExceedsMaximumLength 
kQ3NoticeFileAliasWasChanged 


Previous Book Contents Book Index Next

© Apple Computer, Inc.
11 JUL 1996